package com.chenfan.mcn.model.vo;

import com.chenfan.mcn.enums.ExcutionApprovalStatusEnum;
import com.chenfan.mcn.model.CalculationDevided;
import com.chenfan.mcn.model.ExcuteFeedback;
import com.chenfan.mcn.model.StarAccountInfo;
import com.chenfan.mcn.model.StarBillingHeader;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * @author tangwei
 * Date:     2021/1/27 10:23
 * Description: 执行单详情
 */
@Data
public class ExcutionOrderDetailVO implements Serializable {

    private static final long serialVersionUID = -3428682719950426867L;

    /**
     * 执行单id
     */
    private Long id;

    /**
     * 执行单号
     */
    private String excuteCode;

    /**
     * 执行单类型：1-内部红人执行单，2-外部红人执行单, 3-KOC红人执行单
     */
    private Integer type;

    /**
     * 客户id
     */
    private Long customerId;
    /**
     * 客户编码
     */
    private String customerCode;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 收入合同主键id
     */
    private Long incomeContractId;

    /**
     * 收入合同补充协议主键id
     */
    private Long contractAgreementId;

    /**
     * 红人返点合同ID
     */
    private Long starRebateId;

    /**
     * 红人返点合同编号
     */
    private String starRebateCode;

    /**
     * 单据状态：-2_待执行, -1_执行中, 0_待提交, 1_审批中, 2_审批通过, 3_审批拒绝, 4_已撤回, 9_作废
     */
    private Integer approvalStatus;

    /**
     * 单据状态名称
     */
    private String approvalStatusName;

    /**
     * star_platform_info表主键id
     */
    private Long starPlatformInfoId;

    /**
     * 红人id
     */
    private Long starId;

    /**
     * 红人昵称
     */
    private String starNickName;

    /**
     * 红人平台
     */
    private String platformName;

    /**
     * 红人真实姓名
     */
    private String starRealName;

    /**
     * 红人经纪人id
     */
    private Long starAgentId;

    /**
     * 红人经纪人
     */
    private String starAgentName;

    /**
     * 账号是否入驻：0否1是
     */
    private Integer inSystemAdmin;

    /**
     * 红人分成比例
     */
    private BigDecimal starDevidedRate;

    /**
     * 发布类型（数据字典）
     */
    private String publishType;

    /**
     * 发布形式（数据字典）
     */
    private String publishForm;

    /**
     * 发布日期开始时间
     */
    private Date promisePublishDate;

    /**
     * 发布日期结束时间
     */
    private Date promisePublishDateEnd;

    /**
     * 品牌名称(数据字典)
     */
    private String brandName;

    /**
     * 品牌名称
     */
    private String brandNameN;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 品类（数据字典）
     */
    private String category;

    /**
     * 执行单总金额
     */
    private BigDecimal actualQuotedPrice;

    /**
     * 本单分成比例
     */
    private BigDecimal dividedRate;

    /**
     * 微任务金额
     */
    private BigDecimal microTaskAmount;

    /**
     * 粉丝头条金额
     */
    private BigDecimal fansHeadlineAmount;

    /**
     * 平台手续费
     */
    private BigDecimal platformFee;

    /**
     * 机酒差旅补贴（元）
     */
    private BigDecimal otherFee;

    /**
     * 执行人id
     */
    private Long excutorId;

    /**
     * 执行人名称
     */
    private String excutorName;

    /**
     * 执行人部门
     */
    private String excutorDepartment;

    /**
     * 执行人部门主管ID
     */
    private Long excutorLeaderId;

    /**
     * 执行人部门主管名字
     */
    private String excutorLeaderName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 附件-JSON字符串
     */
    private String attachmentFile;

    /**
     * 删除标记
     */
    private Integer isDelete;

    /**
     * 创建时间
     */
    private Date createDate;

    /**
     * 创建人名称
     */
    private String createName;

    /**
     * 创建人id
     */
    private Long createBy;

    /**
     * 执行反馈
     */
    private ExcuteFeedback excuteFeedback;

    /**
     * 打款信息
     */
    private PaidInfoDetailVO paidInfo;

    /**
     * 计算分成
     */
    private CalculationDevided calculationDevided;

    /**
     * 收入合同
     */
    private ExcutionOrderContractVO incomeContract;

    /**
     * 红人账户信息
     */
    private StarAccountInfo starAccountInfo;

    /**
     * 客户档案
     */
    private CustomerVO customerVO;

    /**
     * 流程节点id
     */
    private Long flowId;

    /**
     * 流程id返回
     */
    private String flowIds;

    /**
     * 流程节点名称
     */
    private String flowStatusName;

    /**
     * 年度优惠返点比例
     */
    private BigDecimal yearRebateRate;

    /**
     * 实际报价
     */
    private BigDecimal realAmount;

    /**
     * 采购合同单号
     */
    private String purchaseCode;

    /**
     * 红人结算固定返点比例
     */
    private BigDecimal fixedRebateRatio;

    /**
     * 是否平台报备
     */
    private Boolean platformReport;

    /**
     * 统筹人id
     */
    private Long coordinatorId;

    /**
     * 统筹人名称
     */
    private String coordinatorName;

    /**
     * 红人账户id
     */
    private Long starAccountInfoId;

    /**
     * 客户账户id
     */
    private Long customerAccountInfoId;

    /**
     * 下单平台
     */
    private String orderPlatform;

    /**
     * 平台订单号
     */
    private String platformOrderCode;

    /**
     * 平台订单号
     */
    private String platformOrderNumber;

    /**
     * 账单流程ID-红人分成费
     */
    private Long invoiceFlowId;

    /**
     * 账单流程ID集合-红人分成费
     */
    private List<Long> invoiceFlowIds;

    public String getApprovalStatusName() {
        if (Objects.nonNull(getApprovalStatus())) {
            return ExcutionApprovalStatusEnum.getStatusName(getApprovalStatus());
        }
        return null;
    }

    /**
     * 收入合同编号
     */
    private String yearCode;

    /**
     * (开票信息)开票形式：0无需开票；1开票待定；2开票
     */
    private Integer invoiceForm;

    /**
     * (开票信息)开票抬头
     */
    private String invoiceTitle;

    /**
     * (开票信息)开票类型：普票；专票
     */
    private String invoiceType;

    /**
     * (开票信息)开票内容
     */
    private String invoiceContent;

    /**
     * 红人开票信息id
     */
    private Long starBillingHeaderId;

    /**
     * 红人开票抬头数据
     */
    private StarBillingHeader starBillingHeader;

    /**
     * 是否为全平台入驻红人 0 否 1 是
     */
    private Integer isAllPlatform;

    /**
     * 结算单ID
     */
    private Long starSettlementId;

    /**
     * 结算单号
     */
    private String starSettlementCode;

    /**
     * 结算单ID
     */
    private Long intentionId;


    /**
     * 意向单编号
     */
    private String intentionCode;

    /**
     * 合作内容（取自数据字典）
     */
    private String cooperationContent;

    /**
     * 合作内容名称
     */
    private String cooperationContentName;

    /**
     * 本单分成备注
     */
    private String dividedRemark;

    /**
     * 刊例原价（元）
     */
    private BigDecimal cardRatePrice;
    /**
     * 其他加价收入（元）
     */
    private BigDecimal otherAmount;
    /**
     * 其他加价收入说明
     */
    private String otherAmountRemark;
    /**
     * 机酒差旅补贴说明
     */
    private String specialFeeRemark;
    /**
     * 发布平台名称
     */
    private String publishFormName;
    /**
     * 订单平台名称
     */
    private String orderPlatformName;
    /**
     * 发布平台
     */
    private String platformId;


    /**
     * 红人平台昵称
     */
    private String platNickName;

    /**
     * 是否挂车/橱窗/组件：0否1是
     */
    private Integer haveLinkCommand;


    /**
     * 其他补贴性收入（元）
     */
    private BigDecimal subsidyIncomeAmount;

    /**
     * 其他补贴性收入说明
     */
    private String subsidyIncomeRemark;

    /**
     * 回款状态：0未回款；1部分回款；2已回款
     */
    private Integer paybackStatus;

    /**
     * 回款状态名称
     */
    private String paybackStatusName;

    /**
     * 累计回款金额
     */
    private Integer paybackAmount;

    /**
     * 回款时间
     */
    private Date paybackDate;

    /**
     * 商务提成结算状态：0:未结算；1:结算中；2:已结算
     */
    private Integer businessCommissionSettleStatus;

    /**
     * 商务提成结算状态名称
     */
    private String businessCommissionSettleStatusName;

    /**
     * 客户返点结算状态：0:未结算；1:结算中；2:已结算
     */
    private Integer rebateSettleStatus;

    /**
     * 客户返点结算状态名称
     */
    private String rebateSettleStatusName;

    /**
     * AE提成结算状态
     */
    private Integer commissionSettleStatus;

    /**
     * AE提成结算状态名称
     */
    private String commissionSettleStatusName;

    /**
     * 客户返点合同编号
     */
    private String rebateContractCode;

    /**
     * 是否直播合作广告：0否、1是
     */
    private Integer isLiveAd;

    /**
     * 是否有折扣返点审批：0否、1是
     */
    private Integer haveDiscountApproval;

    /**
     * 折扣返点审批图片
     */
    private String discountScreenshot;

    /**
     * AE发布备注
     */
    private String aePublishRemark;

    /**
     * AE发布附件
     */
    private String aePublishAttachment;
}
